package com.ruoyi.category.service;

import java.util.List;
import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.system.domain.vo.RouterVo;

/**
 * 科目 业务层
 * 
 * @author yjf
 */
public interface ISysSubjectService
{
    /**
     * 查询类别列表
     * 
     * @param subject 类别信息
     * @return 类别列表
     */
    public List<SysDept> selectSubjectList(SysDept subject);

    /**
     * 构建前端路由所需要的类别
     * 
     * @param subjects 类别列表
     * @return 路由列表
     */
    public List<RouterVo> buildSubjects(List<SysDept> subjects);

    /**
     * 构建前端所需要树结构
     * 
     * @param subjects 类别列表
     * @return 树结构列表
     */
    public List<SysDept> buildSubjectTree(List<SysDept> subjects);

    /**
     * 构建前端所需要下拉树结构
     * 
     * @param subjects 类别列表
     * @return 下拉树结构列表
     */
    public List<TreeSelect> buildSubjectTreeSelect(List<SysDept> subjects);


    /**
     * 新增保存类别信息
     * 
     * @param subject 类别信息
     * @return 结果
     */
    public int insertSubject(SysDept subject);

    /**
     * 删除类别管理信息
     * 
     * @param deptId 类别ID
     * @return 结果
     */
    public int deleteSubjectById(Long deptId);

    /**
     * 校验类别名称是否唯一
     * 
     * @param subject 类别信息
     * @return 结果
     */
    public String checkSubjectNameUnique(SysDept subject);
}
